<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>1.回顾Object.defineProperty的方法</title>
</head>

<body>
    <script type="text/javascript">
        let number = 12;
        let person = {
            name: '卜俊杰',
            sex: '男',

        }
        Object.defineProperty(person, 'age', {
            // value: 18,
            // //  控制属性是否可以枚举，默认值是 false
            // enumerable: true,
            // // 控制属性是否可以修改,默认值是 false 不可修改
            // writable: true,
            // //  控制属性是否可以被删除，默认是 false 不可以被删除
            // configurable: true

            //  当有人读取 person 的 age 属性时，get 函数（getter）就会被调用。且返回值就是 age 的值
            get: function () {
                console.log('有人读取 age 属性了')
                return number;
            },
            //  当有人修改 person 的 age 属性时，set 函数（setter）就会被调用。且会收到修改的具体指
            set(value) {
                console.log('有人修改修改了 age 属性，且值是value=', value)
                number = value;
            }

        });
        console.log(person);

        /*    for (let key in person) {
               console.log('输出的key=', key);
           } */
    </script>

</body>

</html>